/**
 * @description utils controller
 * @author chengpeng
 */

const fse = require('fs-extra')
const path = require('path')
const {
    SuccessModel,
    ErrorModel
} = require('../model/ResModel')
const {
    uploadFileSizeFailInfo
} = require('../model/ErrorInfo')

// 图片大小
const MIX_SIZE = 1024 * 1024 * 1024 // 1M
// 存储目录
const DIST_FOLDER_PATH = path.join(__dirname, '..', '..', 'uploadFiles')

// 是否创建目录
fse.pathExists(DIST_FOLDER_PATH).then(exist => {
    if (!exist) {
        // 创建目录
        fse.ensureDir(DIST_FOLDER_PATH)
    }
})

/**
 * @description 保存文件
 * @author chengpeng
 * @param {string} name 文件名
 * @param {string} type 文件类型
 * @param {number} size 文件大小
 * @param {sting} filePath 文件路径
 */
async function saveFile({
    name,
    type,
    size,
    filePath
}) {
    if (size > MIX_SIZE) {
        await fse.remove(filePath)
        return new ErrorModel(uploadFileSizeFailInfo)
    }

    //  移动文件
    const fileName = Date.now() + '.' + name
    const newFilePath = path.join(DIST_FOLDER_PATH, fileName)
    await fse.move(filePath, newFilePath)

    return new SuccessModel({
        url: '/' + fileName
    })
}

module.exports = {
    saveFile
}